import { http } from '@/utils/request'

/**
 * 发布游记
 * @param {Object} data - 游记数据，包含content、image、userId等
 * @returns {Promise} - 返回Promise对象
 */
export const publishTravel = (data) => http.post('/api/travels', data)

/**
 * 修改游记
 * @param {Number} id - 游记ID
 * @param {Object} data - 修改的游记数据
 * @returns {Promise} - 返回Promise对象
 */
export const updateTravel = (id, data) => http.put(`/api/travels/${id}`, data)
/**
 * 获取游记列表
 * @param {Object} params - 查询参数，包含page、size、keyword、currentUserId等
 * @returns {Promise} - 返回Promise对象
 */
export const getTravelList = (params) => http.get('/api/travels', { params })

/**
 * 获取用户发布的游记列表
 * @param {Number} userId - 用户ID
 * @param {Object} params - 查询参数，包含page、size、currentUserId等
 * @returns {Promise} - 返回Promise对象
 */
export const getUserTravelList = (userId, params) => http.get(`/api/travels/user/${userId}`, { params })

/**
 * 获取游记详情
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含currentUserId等
 * @returns {Promise} - 返回Promise对象
 */
export const getTravelDetail = (id) => http.get(`/api/travels/${id}`)

/**
 * 增加游记浏览量
 * @param {Number} id - 游记ID
 * @returns {Promise} - 返回Promise对象
 */
export const increaseTravelView = (id) => http.post(`/api/travels/${id}/view`)

/**
 * 点赞游记
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const likeTravel = (id, userId) => {
    return http.post(`/api/travels/${id}/like?userId=${userId}`);
};

/**
 * 取消点赞
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const unlikeTravel = (id, userId) => http.delete(`/api/travels/${id}/like?userId=${userId}`)

/**
 * 收藏游记
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const favoriteTravel = (id, userId) => http.post(`/api/travels/${id}/favorite?userId=${userId}`)

/**
 * 取消收藏
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const unfavoriteTravel = (id, userId) => http.delete(`/api/travels/${id}/favorite?userId=${userId}`)

/**
 * 获取点赞状态
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const getLikeStatus = (id, userId) => http.get(`/api/travels/${id}/like/status?userId=${userId}`)

/**
 * 获取收藏状态
 * @param {Number} id - 游记ID
 * @param {Object} params - 查询参数，包含userId
 * @returns {Promise} - 返回Promise对象
 */
export const getFavoriteStatus = (id, userId) => http.get(`/api/travels/${id}/favorite/status?userId=${userId}`)

/**
 * 获取用户点赞的游记列表
 * @param {Object} params - 查询参数，包含userId、page、size
 * @returns {Promise} - 返回Promise对象
 */
export const getLikedTravelList = (params) => http.get('/api/travels/liked', { params })

/**
 * 获取用户收藏的游记列表
 * @param {Object} params - 查询参数，包含userId、page、size
 * @returns {Promise} - 返回Promise对象
 */
export const getFavoritedTravelList = (params) => http.get('/api/travels/favorited', { params })

/**
 * 同步游记的点赞和收藏数量
 * @param {Number} id - 游记ID
 * @returns {Promise} - 返回Promise对象
 */
export const syncTravelCounts = (id) => http.post(`/api/travels/${id}/sync-counts`)

/**
 * 获取关注用户的游记列表
 * @param {Object} params - 查询参数，包含用户ID和分页信息
 * @returns {Promise} 返回关注用户的游记列表
 */
export const getFollowingTravelList = (params) => {
  return http.get('/api/travels/following', { params })
}

/**
 * 创建游记
 * @param {Object} data - 游记数据
 * @returns {Promise} 返回创建结果
 */
export const createTravel = (data) => {
  return http.post('/api/travels', data)
}

/**
 * 删除游记
 * @param {string} id - 游记ID
 * @returns {Promise} 返回删除结果
 */
export const deleteTravel = (id) => {
  return http.delete(`/api/travels/${id}`)
}
